package fiuba.algo3.ObjetoRobado;

import fiuba.algo3.ObjetoRobado.ObjetoRobado;

import fiuba.algo3.XMLProcessor.nucleo.NodoXML;
import fiuba.algo3.motor.MotorXML;
import fiuba.algo3.mundo.Pais;
import fiuba.algo3.persistencia.ConstructorObjetosRobados;
import java.util.List;
//import org.w3c.dom.Node;

public abstract class ConsultorObjetoRobado
{
//	private static Node[] listadoEntradas;
	private static List<NodoXML> listadoEntradas;

	public static void inicializar()
	{
		String nombreArchivo = "baseDeDatos/objetosRobados.xml";

//		listadoEntradas = MotorXML.obtenerListado(nombreArchivo);
		listadoEntradas = MotorXML.obtenerListadoXML(nombreArchivo);
	}

	private static boolean coincideAtributo(NodoXML entrada, String nombreAtributo, String valor)
	{
		return entrada.obtenerValorAtributo(nombreAtributo).equals(valor);
	}
/*
	private static boolean coincideAtributo(Node entrada, String nombreAtributo, String valor)
	{
		return MotorXML.verificarAtributo(entrada, nombreAtributo, valor);
	}
*/
	private static boolean coincideEntrada(NodoXML entrada, String nombrePais, String tipoPista)
	{
		return coincideAtributo(entrada,"nombrePais",nombrePais) &&
				coincideAtributo(entrada,"valor",tipoPista);
	}
/*
	private static boolean coincideEntrada(Node entrada, String nombrePais, String tipoPista)
	{
		return coincideAtributo(entrada,"nombrePais",nombrePais) &&
				coincideAtributo(entrada,"valor",tipoPista);
	}
/**/
	private static NodoXML buscarObjetoRobado(String nombrePais, String nombreTipo)
	{
		for (NodoXML nodo: listadoEntradas)
		{
			if (coincideEntrada(nodo, nombrePais, nombreTipo))
				return nodo.obtenerPrimogenito();
		}

		return null;
	}
/**/
/*
	private static Node buscarObjetoRobado(String nombrePais, String nombreTipo)
	{
		for (Node nodo: listadoEntradas)
		{
			if (coincideEntrada(nodo, nombrePais,nombreTipo))
				return nodo.getFirstChild();
		}

		return null;
	}
/**/	
	public static ObjetoRobado obtenerObjetoRobado(String nombrePais, String nombreTipo)
	{
		return ConstructorObjetosRobados.construir(buscarObjetoRobado(nombrePais, nombreTipo));
	}

	public static ObjetoRobado obtenerObjetoRobado(Pais pais, String nombreTipo)
	{
		return obtenerObjetoRobado(pais.obtenerNombre(), nombreTipo);
	}

}
